/* Referencia:
    http://nereida.deioc.ull.es/~pl/perlexamples/node159.html
    Programa 4.1.1   Calculadora elemental. Análizador sintáctico.

	File: /home/pl/src/precedencia/hoc1/hoc1.y

*/

%{
  #define YYSTYPE double
  #include <stdio.h>
%}

%token NUMBER
%left '+' '-'
%left '*' '/'

%%

list
    :
    | list '\n'
    | list expr   { printf("%.8g\n",$2);}
    ;

expr
    : NUMBER { $$ = $1;}
    | expr '+' expr {$$ = $1 + $3;}
    | expr '-' expr {$$ = $1 - $3;}
    | expr '*' expr {$$ = $1 * $3;}
    | expr '/' expr {$$ = $1 / $3;}
    ;

%%

extern FILE * yyin;

main(int argc, char **argv) {
  if (argc > 1) yyin = fopen(argv[1],"r");
  yydebug = 1;
  yyparse();
}

yyerror(char *s) {
  printf("%s\n",s);
}